package com.it.entity.coverage;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Getter
@Setter
@Accessors(chain = true)
@TableName("ai_insurance_coverage")
public class AiInsuranceCoverage implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 险种唯一标识
     */
    @TableId(value = "coverage_id", type = IdType.AUTO)
    private Long coverageId;

    /**
     * 险种编码（如ZC001-玉米种植险）
     */
    @TableField("coverage_code")
    private String coverageCode;

    /**
     * 险种名称（如阳光农业玉米种植保险）
     */
    @TableField("coverage_name")
    private String coverageName;

    /**
     * 险种类型（1-种植业，2-养殖业，3-其他农险）
     */
    @TableField("coverage_type")
    private Integer coverageType;

    /**
     * 可保项目（如：生长周期内的玉米植株、健康能繁母猪等）
     */
    @TableField("insurable_subject")
    private String insurableSubject;

    /**
     * 保险责任范围（如：暴雨、洪水、病虫害等导致的损失）
     */
    @TableField("insurance_scope")
    private String insuranceScope;

    /**
     * 责任免除条款（如：战争、投保人故意行为等导致的损失）
     */
    @TableField("exclusion_clause")
    private String exclusionClause;

    /**
     * 单位保额（元/亩或元/头）
     */
    @TableField("unit_insured")
    private BigDecimal unitInsuredAmount;

    /**
     * 最短保险期限（天）
     */
    @TableField("term_min")
    private Integer termMin;

    /**
     * 最长保险期限（天）
     */
    @TableField("term_max")
    private Integer termMax;

    /**
     * 投保所需材料（如：身份证、土地承包证、标的清单等）
     */
    @TableField("required_materials")
    private String requiredMaterials;

    /**
     * 险种状态（1-启用，2-停用）
     */
    @TableField("coverage_status")
    private Integer coverageStatus;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}